Memory aligned copy operation execution

ABSTRACT

Optimizing copy operations in a storage array, includes combining, in dependence upon a metadata optimization policy, a plurality of copy operations into a single copy operation and splitting the single copy operation into an optimized set of executable copy operations that copy data based on memory alignment.

CROSS-REFERENCE TO RELATED APPLICATIONS

This is a continuation application for patent entitled to a filing dateand claiming the benefit of earlier-filed U.S. patent application Ser.No. 17/160,938, filed Jan. 28, 2021, herein incorporated by reference inits entirety, which is a continuation of U.S. Pat. No. 10,956,054,issued Mar. 23, 2021, which is a continuation of and claims priorityfrom U.S. Pat. No. 10,268,403, issued Apr. 23, 2019, which is acontinuation of U.S. Pat. No. 9,740,414, issued Aug. 22, 2017.

BACKGROUND Field of Technology

The field of technology is data processing, or, more specifically,methods, apparatuses, and products for optimizing copy operations.

Description of Related Art

Modern computing systems frequently include a wide array of computerhardware resources and computer software applications executing on orotherwise utilizing the computer hardware resources. Such applicationsmay perform data transfer operations that result in data being copiedfrom a first memory location to a second memory location, for example,as part of a memory backup operation. Frequently, the applications maylimit the amount of data that may be copied from a first memory locationto a second memory location. As such, copying an amount of data thatexceeds such a limit may be carried out using multiple operations, eachof which is associated with a significant overhead. For example, eachoperation may require the creation of a significant amount of metadata.

SUMMARY

Methods, apparatus, and products for optimizing copy operations,including: combining, in dependence upon a metadata optimization policy,a plurality of copy operations into a single copy operation; andsplitting the single copy operation into an optimized set of executablecopy operations that copy data based on memory alignment.

The foregoing and other objects, features and advantages of theinvention will be apparent from the following more particulardescriptions of example embodiments of the invention as illustrated inthe accompanying drawings wherein like reference numbers generallyrepresent like parts of example embodiments of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 sets forth a block diagram of an example system configured foroptimizing copy operations according to embodiments of the presentdisclosure.

FIG. 2 sets forth a block diagram of an example storage array controlleruseful in optimizing copy operations according to embodiments of thepresent disclosure.

FIG. 3 sets forth a flow chart illustrating an example method foroptimizing copy operations according to embodiments of the presentdisclosure.

FIG. 4 sets forth a flow chart illustrating an additional example methodfor optimizing copy operations according to embodiments of the presentdisclosure.

FIG. 5 sets forth a flow chart illustrating an additional example methodfor optimizing copy operations according to embodiments of the presentdisclosure.

DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

Example methods, apparatuses, and products for optimizing copyoperations in accordance with the present disclosure are described withreference to the accompanying drawings, beginning with FIG. 1 . FIG. 1sets forth a block diagram of a system configured for optimizing copyoperations according to embodiments of the present disclosure. Thesystem of FIG. 1 includes a number of computing devices (164, 166, 168,170). Such computing devices may be implemented in a number of differentways. For example, a computing device may be a server in a data center,a workstation, a personal computer, a notebook, or the like.

The computing devices (164, 166, 168, 170) in the example of FIG. 1 arecoupled for data communications to a number of storage arrays (102, 104)through a storage area network (SAN′) (158) as well as a local areanetwork (160) (‘LAN’). The SAN (158) may be implemented with a varietyof data communications fabrics, devices, and protocols. Example fabricsfor such a SAN (158) may include Fibre Channel, Ethernet, Infiniband,Serial Attached Small Computer System Interface (′ SAS′), and the like.Example data communications protocols for use in such a SAN (158) mayinclude Advanced Technology Attachment (‘ATA’), Fibre Channel Protocol,SCSI, iSCSI, HyperSCSI, and others. Readers of skill in the art willrecognize that a SAN is just one among many possible data communicationscouplings which may be implemented between a computing device (164, 166,168, 170) and a storage array (102, 104). For example, the storagedevices (146, 150) within the storage arrays (102, 104) may also becoupled to the computing devices (164, 166, 168, 170) as networkattached storage (‘NAS’) capable of facilitating file-level access, oreven using a SAN-NAS hybrid that offers both file-level protocols andblock-level protocols from the same system. Any other such datacommunications coupling is well within the scope of embodiments of thepresent disclosure.

The local area network (160) of FIG. 1 may also be implemented with avariety of fabrics and protocols. Examples of such fabrics includeEthernet (802.3), wireless (802.11), and the like. Examples of such datacommunications protocols include Transmission Control Protocol (‘TCP’),User Datagram Protocol (‘UDP’), Internet Protocol (‘IP’), HyperTextTransfer Protocol (‘HTTP’), Wireless Access Protocol (‘WAP’), HandheldDevice Transport Protocol (‘HDTP’), Session Initiation Protocol (‘SIP’),Real Time Protocol (‘RTP’) and others as will occur to those of skill inthe art.

The example storage arrays (102, 104) of FIG. 1 provide persistent datastorage for the computing devices (164, 166, 168, 170). Each storagearray (102, 104) depicted in FIG. 1 includes a storage array controller(106, 112). Each storage array controller (106, 112) may be embodied asa module of automated computing machinery comprising computer hardware,computer software, or a combination of computer hardware and software.The storage array controllers (106, 112) may be configured to carry outvarious storage-related tasks. Such tasks may include writing datareceived from the one or more of the computing devices (164, 166, 168,170) to storage, erasing data from storage, retrieving data from storageto provide the data to one or more of the computing devices (164, 166,168, 170), monitoring and reporting of disk utilization and performance,performing RAID (Redundant Array of Independent Drives) or RAID-likedata redundancy operations, compressing data, encrypting data, and soon.

Each storage array controller (106, 112) may be implemented in a varietyof ways, including as a Field Programmable Gate Array (‘FPGA’), aProgrammable Logic Chip (‘PLC’), an Application Specific IntegratedCircuit (‘ASIC’), or computing device that includes discrete componentssuch as a central processing unit, computer memory, and variousadapters. Each storage array controller (106, 112) may include, forexample, a data communications adapter configured to supportcommunications via the SAN (158) and the LAN (160). Although only one ofthe storage array controllers (112) in the example of FIG. 1 is depictedas being coupled to the LAN (160) for data communications, readers willappreciate that both storage array controllers (106, 112) may beindependently coupled to the LAN (160). Each storage array controller(106, 112) may also include, for example, an I/O controller or the likethat couples the storage array controller (106, 112) for datacommunications, through a midplane (114), to a number of storage devices(146, 150), and a number of write buffer devices (148, 152).

Each write buffer device (148, 152) may be configured to receive, fromthe storage array controller (106, 112), data to be stored in thestorage devices (146). Such data may originate from any one of thecomputing devices (164, 166, 168, 170). In the example of FIG. 1 ,writing data to the write buffer device (148, 152) may be carried outmore quickly than writing data to the storage device (146, 150). Thestorage array controller (106, 112) may be configured to effectivelyutilize the write buffer devices (148, 152) as a quickly accessiblebuffer for data destined to be written to storage. In this way, thelatency of write requests may be significantly improved relative to asystem in which the storage array controller writes data directly to thestorage devices (146, 150).

A ‘storage device’ as the term is used in this specification refers toany device configured to record data persistently. The term‘persistently’ as used here refers to a device's ability to maintainrecorded data after loss of a power source. Examples of storage devicesmay include mechanical, spinning hard disk drives, Solid-state drives(e.g., “Flash drives”), and the like.

The storage array controllers (106, 112) of FIG. 1 may be useful inoptimizing copy operations according to embodiments of the presentdisclosure. The storage array controllers (106, 112) may assist inoptimizing copy operations by receiving a plurality of copy operations,detecting a triggering event that causes the storage array controller toinitiate execution of the plurality of copy operations, combining theplurality of copy operations into a single copy operation, initiatingexecution of the single copy operation, and performing other functionsas will be described in greater detail below.

The arrangement of computing devices, storage arrays, networks, andother devices making up the example system illustrated in FIG. 1 are forexplanation, not for limitation. Systems useful according to variousembodiments of the present disclosure may include differentconfigurations of servers, routers, switches, computing devices, andnetwork architectures, not shown in FIG. 1 , as will occur to those ofskill in the art.

Optimizing copy operations in accordance with embodiments of the presentdisclosure is generally implemented with computers. In the system ofFIG. 1 , for example, all the computing devices (164, 166, 168, 170) andstorage controllers (106, 112) may be implemented to some extent atleast as computers. For further explanation, therefore, FIG. 2 setsforth a block diagram of a storage array controller (202) useful inoptimizing copy operations according to embodiments of the presentdisclosure.

The storage array controller (202) of FIG. 2 is similar to the storagearray controllers depicted in FIG. 1 , as the storage array controller(202) of FIG. 2 is communicatively coupled, via a midplane (206), to oneor more storage devices (212) and to one or more memory buffer devices(214) that are included as part of a storage array (216). The storagearray controller (202) may be coupled to the midplane (206) via one ormore data communications links (204) and the midplane (206) may becoupled to the storage devices (212) and the memory buffer devices (214)via one or more data communications links (208, 210). The datacommunications links (204, 208, 210) of FIG. 2 may be embodied, forexample, as Peripheral Component Interconnect Express (‘PCIe’) bus.

The storage array controller (202) of FIG. 2 includes at least onecomputer processor (232) or ‘CPU’ as well as random access memory (RAM′)(236). The computer processor (232) may be connected to the RAM (236)via a data communications link (230), which may be embodied as a highspeed memory bus such as a Double-Data Rate 4 (‘DDR4’) bus.

Stored in RAM (214) is an operating system (246). Examples of operatingsystems useful in storage array controllers (202) configured foroptimizing copy operations according to embodiments of the presentdisclosure include UNIX™, Linux™, Microsoft Windows™, and others as willoccur to those of skill in the art. Also stored in RAM (236) is anoptimization module (248), a module that includes computer programinstructions useful in optimizing copy operations according toembodiments of the present disclosure.

The optimization module (248) of FIG. 2 may be configured to optimizecopy operations by receiving a plurality of copy operations. The copyoperations may be included in a stream of virtual copy operations. Suchvirtual copy operations may be embodied, for example, as operationsconfigured to copy virtualized storage (e.g., virtual disks, virtualvolumes) from one location to another location within a storage array oreven between multiple storage arrays. Such virtual copy operations maybe received as a stream where new, incoming virtual copy operations arereceived at regular intervals, irregular intervals, or any combinationthereof. The plurality of copy operations may be embodied, for example,as a plurality of extended copy (‘XCOPY’) operations, as a plurality ofoffloaded data transfers (‘ODX’) operations, as a combination ofdifferent types of operations, and so on.

The optimization module (248) of FIG. 2 may be further configured tooptimize copy operations by detecting a triggering event that causes thestorage array controller (202) to initiate execution of the plurality ofcopy operations. A triggering event can represent an event whoseoccurrence causes the storage array controller (202) to initiate theexecution of one or more of the copy operations received by the storagearray controller (202). Such triggering events may include, for example,the number of copy operations that have been received but not processedexceeding a predetermined threshold, the amount of time since a copyoperation has been received but not processed exceeding a predeterminedthreshold, the amount of time since one or more of the copy operationshave been received but not processed exceeding a predeterminedthreshold, the storage array controller (202) receiving a request towrite data to a storage location that is identified in one or more ofthe copy operations as being an area of storage that is to be copied,and so on.

The optimization module (248) of FIG. 2 may be further configured tooptimize copy operations by combining the plurality of copy operationsinto a single copy operation. Combining the plurality of copy operationsinto a single copy operation may be carried out, for example, bycreating a new copy operation whose parameters capture all storagelocations that were identified for copying in the plurality of copyoperations. Consider an example in which a first copy operation includeda request to copy the first 16 GB of the address space in a particularstorage device, a second copy operation included a request to copy thesecond 16 GB of the address space in the same storage device, and athird copy operation included a request to copy the third 16 GB of theaddress space in the same storage device. In such an example, combiningthe plurality of copy operations into the single copy operation may becarried out by creating a new copy operation and specifying the first 48GB of the address space in the storage device as the area of storagethat is to be copied.

The optimization module (248) of FIG. 2 may be further configured tooptimize copy operations by initiating execution of the single copyoperation. The storage array controller (202) of FIG. 2 may initiateexecution of the single copy operation, for example, by sending thesingle copy operation to a particular storage device from which data isto be copied.

The storage array controller (202) of FIG. 2 also includes a pluralityof host bus adapters (218, 220, 222) that are coupled to the processor(232) via a data communications link (224, 226, 228). Each host busadapter (218, 220, 222) may be embodied as a module of computer hardwarethat connects the host system (i.e., the storage array controller) toother network and storage devices. Each of the host bus adapters (218,220, 222) of FIG. 2 may be embodied, for example, as a Fibre Channeladapter that enables the storage array controller (202) to connect to aSAN, as an Ethernet adapter that enables the storage array controller(202) to connect to a LAN, and so on. Each of the host bus adapters(218, 220, 222) may be coupled to the computer processor (232) via adata communications link (224, 226, 228) such as, for example, a PCIebus.

The storage array controller (202) of FIG. 2 also includes a host busadapter (240) that is coupled to an expander (242). The expander (242)depicted in FIG. 2 may be embodied as a module of computer hardwareutilized to attach a host system to a larger number of storage devicesthan would be possible without the expander (242). The expander (242)depicted in FIG. 2 may be embodied, for example, as a SAS expanderutilized to enable the host bus adapter (240) to attach to storagedevices in an embodiment where the host bus adapter (240) is embodied asa SAS controller.

The storage array controller (202) of FIG. 2 also includes a switch(244) that is coupled to the computer processor (232) via a datacommunications link (238). The switch (244) of FIG. 2 may be embodied asa computer hardware device that can create multiple endpoints out of asingle endpoint, thereby enabling multiple devices to share what wasinitially a single endpoint. The switch (244) of FIG. 2 may be embodied,for example, as a PCIe switch that is coupled to a PCIe bus (238) andpresents multiple PCIe connection points to the midplane (206).

The storage array controller (202) of FIG. 2 also includes a datacommunications link (234) for coupling the storage array controller(202) to other storage array controllers. Such a data communicationslink (234) may be embodied, for example, as a QuickPath Interconnect(‘QPI’) interconnect, as PCIe non-transparent bridge (‘NTB’)interconnect, and so on.

Readers will recognize that these components, protocols, adapters, andarchitectures are for illustration only, not limitation. Such a storagearray controller may be implemented in a variety of different ways, eachof which is well within the scope of the present disclosure.

For further explanation, FIG. 3 sets forth a flow chart illustrating anexample method for optimizing copy operations according to embodimentsof the present disclosure. The example method depicted in FIG. 3includes a storage array (300). The storage array (300) depicted in FIG.3 can include a plurality of storage devices and a storage arraycontroller (304) that is coupled for data communications to the storagedevices (316, 318). Although not depicted in similar detail, readerswill appreciate that the storage array (300) depicted in FIG. 3 may besimilar to the storage arrays described above with reference to FIG. 1 .The example method depicted in FIG. 3 may be carried out, at least inpart, by a storage array controller (304) that is similar to the storagearray controllers described above with reference to FIG. 1 and FIG. 2 .

The example method depicted in FIG. 3 includes receiving (306) aplurality of copy operations (302). The copy operations (302) depictedin FIG. 3 may be included in a stream of virtual copy operations. Suchvirtual copy operations may be embodied, for example, as operationsconfigured to copy virtualized storage (e.g., virtual disks, virtualvolumes) from one location to another location within a storage array oreven between multiple storage arrays. Such virtual copy operations maybe received as a stream where new, incoming virtual copy operations arereceived at regular intervals, irregular intervals, or any combinationthereof. The plurality of copy operations (302) may be embodied, forexample, as a plurality of XCOPY operations, as a plurality of ODXoperations, as a combination of different types of operations, and soon.

The example method depicted in FIG. 3 also includes detecting (308) atriggering event that causes the storage array controller (304) toinitiate execution of the plurality of copy operations. A triggeringevent can represent an event whose occurrence causes the storage arraycontroller (304) to initiate the execution of one or more of the copyoperations (302) received by the storage array controller (304). Suchtriggering events may include, for example, the number of copyoperations (302) that have been received (306) but not processedexceeding a predetermined threshold, the amount of time since a copyoperation (302) has been received (306) but not processed exceeding apredetermined threshold, the amount of time since one or more of thecopy operations (302) have been received (306) but not processedexceeding a predetermined threshold, the storage array controller (304)receiving a request to write data to a storage location that isidentified in one or more of the copy operations (302) as being an areaof storage that is to be copied, and so on.

The example method depicted in FIG. 3 also includes combining (310) theplurality of copy operations (302) into a single copy operation (312).Combining (310) the plurality of copy operations (302) into a singlecopy operation (312) may be carried out, for example, by creating a newcopy operation having parameters that capture all storage locations thatwere identified for copying in the plurality of copy operations (302).Consider an example in which a first copy operation included a requestto copy the first 16 GB of the address space in a particular storagedevice, a second copy operation included a request to copy the second 16GB of the address space in the same storage device, and a third copyoperation included a request to copy the third 16 GB of the addressspace in the same storage device. In such an example, combining (310)the plurality of copy operations (302) into the single copy operation(312) may be carried out by creating a new copy operation and specifyingthe first 48 GB of the address space in the storage device as the areaof storage that is to be copied.

In the example method depicted in FIG. 3 , the plurality of copyoperations (302) are combined (310) into a single copy operation independence upon a metadata optimization policy. The metadataoptimization policy may be embodied as one or more rules utilized todetermine, for example, which copy operations (302) are combined (310)into a single copy operation (312), the order in which the copyoperations (302) are to be combined (310) into the single copy operation(312), and so on. Such a metadata optimization policy may be structuredin such a way that copy operations are selected for inclusion within thesingle copy operation (312) and ordered in such a way within the singlecopy operation (312) that causes, for example, the least amount ofmetadata to be stored in the storage array (300), the least amount ofmetadata to be read or written during the execution of the single copyoperation (312), and so on.

Consider an example in which each of the storage devices (316, 318)depicted in FIG. 3 are logically broken up into 1 MB chucks. Furtherassume that each 1 MB chunk is described by metadata that maps, forexample, a logical address for some data stored within the 1 MB chuck toa physical address of the data. In such an example, assume that aplurality of copy operations (302) are issued to copy data stored on thefirst storage device (316) to the second storage device (318). If thecopy operations are combined such that executing the resultant singlecopy operation (312) would cause data to be read from a first 1 MB chunkand also cause data to be read from a second 1 MB chunk, as part ofexecuting the resultant single copy operation (312), all metadata forthe first 1 MB chunk may be read and all metadata for the second 1 MBchunk may also be read. By contrast, if the copy operations are combinedsuch that executing the resultant single copy operation (312) wouldcause data to be read from only a single 1 MB chunk, metadata for onlythe single 1 MB chunk would need to be read. As such, in order tominimize the amount of metadata that is read or written during theexecution of the single copy operation (312), the metadata optimizationpolicy may be configured such that only copy operations directed to thesame underlying chunk can be combined into a single copy operation(312).

In the example method depicted in FIG. 3 , combining (310) the pluralityof copy operations (302) into a single copy operation (312) independence upon a metadata optimization policy can include identifying(320) a metadata boundary for an underlying storage resource. Such ametadata boundary can define a range of addresses within the underlyingstorage resource that are described by a single metadata block. Theunderlying storage resource may be embodied, for example, as a storagedevice (316, 318) in a storage array (300). In such an example, thestorage array controller (304) may identify (320) a metadata boundaryfor an underlying storage resource by querying the underlying storageresource, by examining system configuration information that includesinformation describing the underlying storage resource, and so on.

In the example method depicted in FIG. 3 , combining (310) the pluralityof copy operations (302) into a single copy operation (312) independence upon a metadata optimization policy can also include grouping(322), within the single copy operation (312), all of the copyoperations (302) that are directed toward the metadata boundary. Thecopy operations (302) that are directed toward the metadata boundary caninclude any copy operation that reads data from or writes data to arange of addresses within the underlying storage resource that aredescribed by a single metadata block.

Readers will appreciate that although the steps described above resultsin only a single copy operation (312) being generated, the stepsdescribed above may be repeated, so that multiple copy operations may becreated. For example, a first set of copy operations (302) may bereceived (306) and ultimately combined (310) into a first single copyoperation (312) and a second set of copy operations (302) may also bereceived (306) and ultimately combined (310) into a second single copyoperation (312). In such an example, because copy operations can becombined (310) by identifying (320) metadata boundaries and grouping(322) all of the copy operations (302) that are directed towards asingle metadata boundary, the first single copy operation (312) and thesecond single copy operation (312) would be constructed in a way wherethe first single copy operation (312) and the second single copyoperation (312) do not both include copy operations that are directed tothe same metadata boundary.

Readers will further appreciate that although steps 320 and 322 resultin only identifying (320) only a single metadata boundary and grouping(322) all of the copy operations directed toward that single metadataboundary, steps 320 and 322 may be repeated as a part of combining (310)the plurality of copy operations (302) into a single copy operation(312). For example, combining (310) the plurality of copy operations(302) into a single copy operation (312) may include identifying (320) afirst metadata boundary and grouping (322) all of the copy operationsdirected toward the first metadata boundary into the single copyoperation (312), identifying (320) a second metadata boundary andgrouping (322) all of the copy operations directed toward the secondmetadata boundary into the single copy operation (312), identifying(320) a third metadata boundary and grouping (322) all of the copyoperations directed toward the third metadata boundary into the singlecopy operation (312), and so on. In such a way, a particular instance ofa single copy operation (312) may span many metadata boundaries but, asdescribed above, two instances of the single copy operation (312) wouldnot both include copy operations that are directed to the same metadataboundary.

The example method depicted in FIG. 3 also includes initiating (314)execution of the single copy operation (312). The storage arraycontroller (304) of FIG. 3 may initiate (314) execution of the singlecopy operation (312), for example, by sending the single copy operation(312) to a particular storage device from which data is to be copied.

For further explanation, FIG. 4 sets forth a flow chart illustrating anexample method for optimizing copy operations according to embodimentsof the present disclosure. The example method depicted in FIG. 4 issimilar to the example method depicted in FIG. 3 , as the example methoddepicted in FIG. 4 also includes receiving (306) a plurality of copyoperations (302), detecting (308) a triggering event that causes thestorage array controller (304) to initiate execution of the plurality ofcopy operations, and combining (310) the plurality of copy operations(302) into a single copy operation (312).

The example method depicted in FIG. 4 also includes identifying (402) acopy operation group associated with the copy operation. Identifying(402) a copy operation group associated with the copy operation may becarried out for each of the plurality of copy operations (302) or foronly a subset of the copy operations (302). Each of the copy operationgroups may represent, for example, different streams of copy operationsissued by different actors (e.g., different software applications,different users, different hardware systems, and so on). Althoughdifferent actors may initiate a stream of copy operations, the storagearray controller (304) may be configured to only optimize copyoperations from a subset of such actors. As such, each copy operationmay include information that identifies the copy operation group thatthe copy operation belongs to, each copy operation issued by aparticular actor may be associated with a particular copy operationgroup, or copy operations may be otherwise associated with a particularcopy operation group such that the storage array controller (304) mayidentify (402) a copy operation group associated with the copyoperation.

In the example method depicted in FIG. 4 , detecting (308) thetriggering event can include detecting (404) a triggering eventassociated with a particular copy operation group. A triggering eventcan represent an event whose occurrence causes the storage arraycontroller (304) to initiate the execution of one or more of the copyoperations (302) received by the storage array controller (304). Suchtriggering events may include, for example, the number of copyoperations (302) that are associated with a particular copy operationgroup and that have been received (306) but not processed has reached apredetermined number, the amount of time since a copy operation (302)that is associated with a particular copy operation group has beenreceived (306) but not processed has reached a predetermined amount oftime, the amount of time since one or more of the copy operations (302)that are associated with a particular copy operation group have beenreceived (306) but not processed has reached a predetermined amount oftime, the storage array controller (304) receiving a request to writedata to a storage location that is identified in one or more of the copyoperations (302) as being an area of storage that is to be copied, andso on.

In the example method depicted in FIG. 4 , combining (310) the pluralityof copy operations (302) into a single copy operation (312) can becarried out by including (406) only the copy operations associated withthe particular copy operation group in the single copy operation (312).Including (406) only the copy operations associated with the particularcopy operation group in the single copy operation (312) may be carriedout, for example, by creating a new copy operation having parametersthat capture all storage locations that were identified for copying inthe plurality of copy operations (302) that are associated with theparticular copy operation group.

The example method depicted in FIG. 4 also includes splitting (408) thesingle copy operation (312) into an optimized set of executable copyoperations. An optimal copy operation may be embodied, for example, as acopy operation that copies a particular amount of data (e.g., a block ofdata) that aligns with the physical or logical layout of memory on thestorage device that data is copied from, as a copy operation that writesa particular amount of data (e.g., a block of data) that aligns with thephysical or logical layout of memory on the storage device that data iswritten to, as an amount of data optimized for transmission across anetwork, and so on. As such, the single copy operation (312) may besplit (408) into an optimized set of executable copy operations bysplitting the single copy operation (312) into a set of optimal copyoperations.

For further explanation, FIG. 5 sets forth a flow chart illustrating anexample method for optimizing copy operations according to embodimentsof the present disclosure. The example method depicted in FIG. 5 issimilar to the example method depicted in FIG. 3 , as the example methoddepicted in FIG. 5 also includes receiving (306) a plurality of copyoperations (302), detecting (308) a triggering event that causes thestorage array controller (304) to initiate execution of the plurality ofcopy operations, and combining (310) the plurality of copy operations(302) into a single copy operation (312).

In the example method depicted in FIG. 5 , detecting (308) a triggeringevent that causes the storage array controller (304) to initiateexecution of the plurality of copy operations (302) can includedetecting (502) that a predetermined period of time has expired since amost recently received copy operation was received. In the examplemethod depicted in FIG. 5 , when the storage array controller (304)ceases receiving copy operations (302) for a predetermined period oftime, the storage array controller (304) may assume that all parts of alarger copy operation have been received. As such, the storage arraycontroller (304) may cease optimizing the copy operations and mayproceed to combine (310) the plurality of copy operations (302) into asingle copy operation (312) and initiate (314) execution of the singlecopy operation (312).

In the example method depicted in FIG. 5 , detecting (502) that apredetermined period of time has expired since a most recently receivedcopy operation was received may be carried out, for example, through theuse of a timer that resets every time a copy operation is received(306). Although the example method depicted in FIG. 5 describes thestorage array controller (304) detecting (502) that a predeterminedperiod of time has expired since a most recently received copy operationwas received, readers will appreciate that the storage array controller(304) may utilize other criteria to determine that an incoming flow ofcopy operations has ceased. For example, rather than detecting (502)that a predetermined period of time has expired since a most recentlyreceived copy operation was received, the storage array controller (304)may track the number of read/write requests that have been receivedsince a most recently received copy operation was received, the storagearray controller (304) may track the number of copy operationsassociated with other copy operation groups that have been receivedsince a most recently received copy operation associated with aparticular copy operation group was received, and so on.

In the example method depicted in FIG. 5 , detecting (308) a triggeringevent that causes the storage array controller (304) to initiateexecution of the plurality of copy operations can include detecting(504) that a predetermined period of time has expired since an oldestcopy operation was received. In the example method depicted in FIG. 5 ,the storage array controller (304) may be configured to limit the timethat the storage array controller (304) can hold a particular copyoperation. As such, the storage array controller (304) may ceaseoptimizing the copy operations and may proceed to combine (310) theplurality of copy operations (302) into a single copy operation (312)and initiate (314) execution of the single copy operation (312) upondetecting (504) that the predetermined period of time has expired sincean oldest copy operation was received.

In the example method depicted in FIG. 5 , detecting (504) that thepredetermined period of time has expired since an oldest copy operationwas received may be carried out, for example, through the use of a timerand/or timestamps associated with each received copy operation. Althoughthe example method depicted in FIG. 5 describes the storage arraycontroller (304) detecting (504) that the predetermined period of timehas expired since an oldest copy operation was received, readers willappreciate that the storage array controller (304) may utilize othercriteria to determine that a pending copy operation should move forwardwith processing. For example, rather than detecting (504) that thepredetermined period of time has expired since an oldest copy operationwas received, the storage array controller (304) may track the number ofread/write requests that have been received since an oldest copyoperation was received, the storage array controller (304) may track thenumber of copy operations associated with other copy operation groupsthat have been received since an oldest copy operation associated with aparticular copy operation group was received, and so on.

In the example method depicted in FIG. 5 , detecting (308) a triggeringevent that causes the storage array controller (304) to initiateexecution of the plurality of copy operations can include detecting(506) that a write request has been received that is directed to an areaof storage identified by one or more of the copy operations. Asdescribed above, a particular copy operation can represent a request tocopy data contained in one area of computer storage to another area ofcomputer storage, where the areas need not be contiguous memory regions.In such an example, when a write request has been received that isdirected to an area of storage identified by one or more of the copyoperations, the copy operation should be performed before executing thewrite operation, to ensure that the data that is copied and written aspart of the copy operation is the same data that was requested to becopied and written when the copy operation was issued. As such, once thestorage array controller (304) detects (506) that a write request hasbeen received that is directed to an area of storage identified by oneor more of the copy operations, the storage array controller (304) maycease optimizing the copy operations and may proceed to combine (310)the plurality of copy operations (302) into a single copy operation(312) and initiate (314) execution of the single copy operation (312),thus reducing delay in servicing the write request. Readers willappreciate that read requests may be processed immediately, however, asa read request will not impact the data that is copied and written aspart of the copy operation.

In the example method depicted in FIG. 5 , detecting (308) a triggeringevent that causes the storage array controller (304) to initiateexecution of the plurality of copy operations can include detecting(508) that a number of copy operations received has reached apredetermined number. The storage array controller (504) depicted inFIG. 5 may be configured to only optimize a predetermined number of copyoperations before combining (310) the plurality of copy operations (302)into a single copy operation (312) and initiating (314) execution of thesingle copy operation (312). As such, the storage array controller (304)may be configured to detect (508) that a number of copy operationsreceived has reached a predetermined number through the use of one ormore counters that is incremented, decremented, or otherwise altered aseach copy operation is received.

In the example method depicted in FIG. 5 , detecting (308) a triggeringevent that causes the storage array controller (304) to initiateexecution of the plurality of copy operations can alternatively includedetecting (510) that a combined size of the copy operations has reacheda predetermined size. The predetermined size may be selected, forexample, based on the physical or logical layout of memory on thestorage devices, based on network bandwidth constraints, based uponconstraints associated with the storage array controller (304), based ondesired performance characteristics, and so on. Detecting (510) that acombined size of the copy operations has reached a predetermined sizemay be carried out, for example, by determining the size of each copyoperation that has been received and keeping a running sum of thecollective size of copy operations that have been received.

Example embodiments of the present disclosure are described largely inthe context of a fully functional computer system. Readers of skill inthe art will recognize, however, that the present disclosure also may beembodied in a computer program product disposed upon computer readablemedia for use with any suitable data processing system. Such computerreadable storage media may be any transitory or non-transitory media.Examples of such media include storage media for machine-readableinformation, including magnetic media, optical media, or other suitablemedia. Examples of such media also include magnetic disks in hard drivesor diskettes, compact disks for optical drives, magnetic tape, andothers as will occur to those of skill in the art. Persons skilled inthe art will immediately recognize that any computer system havingsuitable programming means will be capable of executing the steps of themethod of the invention as embodied in a computer program product.Persons skilled in the art will recognize also that, although some ofthe example embodiments described in this specification are oriented tosoftware installed and executing on computer hardware, nevertheless,alternative embodiments implemented as firmware, as hardware, or as anaggregation of hardware and software are well within the scope ofembodiments of the present disclosure.

It will be understood from the foregoing description that modificationsand changes may be made in various embodiments of the present disclosurewithout departing from its true spirit. The descriptions in thisspecification are for purposes of illustration only and are not to beconstrued in a limiting sense. The scope of the present disclosure islimited only by the language of the following claims.

What is claimed is:
 1. A method comprising: combining, in dependenceupon a metadata optimization policy, a plurality of copy operations intoa single copy operation; and splitting the single copy operation into anoptimized set of one or more executable copy operations that write aparticular amount of data that aligns with a physical or logical layoutof memory at a target storage location.
 2. The method of claim 1 whereincombining, in dependence upon a metadata optimization policy, theplurality of copy operations into a single copy operation furthercomprises: identifying a metadata boundary for an underlying storageresource, the metadata boundary defining a range of addresses within theunderlying storage resources that are described by a single metadatablock; and grouping, within the single copy operation, all of the copyoperations that are directed toward the metadata boundary.
 3. The methodof claim 1 wherein splitting the single copy operation into an optimizedset of executable copy operations further comprises splitting the singlecopy operation into one or more copy operations that copy a particularamount of data that aligns with the physical or logical layout of memoryon a storage device that data is copied from.
 4. The method of claim 1further comprising: identifying a copy operation group associated withthe copy operation, wherein: detecting a triggering event associatedwith a particular copy operation group; and combining the plurality ofcopy operations into the single copy operation further comprisesincluding only the copy operations associated with the particular copyoperation group in the single copy operation.
 5. The method of claim 1wherein splitting the single copy operation into an optimized set ofexecutable copy operations further comprises splitting the single copyoperation into one or more copy operations that write an amount of dataoptimized for transmission across a network.
 6. The method of claim 1wherein the single copy operation and the executable copy operations arevirtual copy operations.
 7. The method of claim 1 further comprisingdetecting, as a triggering event, that a number of copy operationsreceived has reached a predetermined number.
 8. The method of claim 1further comprising, detecting, as a triggering event, that a combinedsize of the copy operations has reached a predetermined size threshold.9. A storage array controller, the storage array controller including acomputer processor and a computer memory, the computer memory includingcomputer program instructions that, when executed, cause the storagearray controller to carry out the steps of: combining, in dependenceupon a metadata optimization policy, a plurality of copy operations intoa single copy operation; and splitting the single copy operation into anoptimized set of one or more executable copy operations that write aparticular amount of data that aligns with a physical or logical layoutof memory at a target storage location.
 10. The storage array controllerof claim 9 wherein combining, in dependence upon a metadata optimizationpolicy, the plurality of copy operations into a single copy operationfurther comprises: identifying a metadata boundary for an underlyingstorage resource, the metadata boundary defining a range of addresseswithin the underlying storage resources that are described by a singlemetadata block; and grouping, within the single copy operation, all ofthe copy operations that are directed toward the metadata boundary. 11.The storage array controller of claim 9 wherein splitting the singlecopy operation into an optimized set of executable copy operationsfurther comprises splitting the single copy operation into one or morecopy operations that copy a particular amount of data that aligns withthe physical or logical layout of memory on a storage device that datais copied from.
 12. The storage array controller of claim 9 furthercomprising computer program instructions that, when executed, cause thestorage array controller to carry out the steps of: identifying a copyoperation group associated with the copy operation; detecting atriggering event associated with a particular copy operation group; andcombining the plurality of copy operations into the single copyoperation further comprises including only the copy operationsassociated with the particular copy operation group in the single copyoperation.
 13. The storage array controller of claim 9 furthercomprising computer program instructions that carry out the step ofdetecting, as a triggering event, that a predetermined period of timehas expired since a most recently received copy operation was received.14. The storage array controller of claim 9 further comprising computerprogram instructions that carry out the step of detecting, as atriggering event, that a predetermined period of time has expired sincean oldest copy operation was received.
 15. The storage array controllerof claim 9 wherein splitting the single copy operation into an optimizedset of executable copy operations further comprises splitting the singlecopy operation into one or more copy operations that write an amount ofdata optimized for transmission across a network.
 16. The storage arraycontroller of claim 9 wherein the single copy operation and theexecutable copy operations are virtual copy operations.
 17. A computerprogram product, the computer program product disposed on a computerreadable storage medium, the computer program product comprisingcomputer program instructions that, when executed, cause a storagedevice to carry out the steps of: combining, in dependence upon ametadata optimization policy, a plurality of copy operations into asingle copy operation; and splitting the single copy operation into anoptimized set of one or more executable copy operations that write aparticular amount of data that aligns with a physical or logical layoutof memory at a target storage location.
 18. The computer program productof claim 17 wherein combining, in dependence upon a metadataoptimization policy, the plurality of copy operations into a single copyoperation further comprises: identifying a metadata boundary for anunderlying storage resource, the metadata boundary defining a range ofaddresses within the underlying storage resources that are described bya single metadata block; and grouping, within the single copy operation,all of the copy operations that are directed toward the metadataboundary.